package cn.zhfeat.hatch.rpc;


import cn.zhfeat.hatch.dto.sysuser.SysAttributeDto;
import cn.zhfeat.hatch.dto.sysuser.SysRoleAttributeDto;
import cn.zhfeat.hatch.dto.sysuser.SysRoleAuthorityDto;
import cn.zhfeat.hatch.dto.sysuser.SysRoleDto;
import cn.zhfeat.hatch.entity.sysuser.SysAttribute;
import cn.zhfeat.hatch.entity.sysuser.SysRole;
import cn.zhfeat.hatch.entity.sysuser.SysRoleAttribute;
import cn.zhfeat.hatch.entity.sysuser.SysRoleAuthority;
import com.github.pagehelper.PageInfo;

import java.util.List;

/**
 * @description: 角色业务服务相关rpc接口
 *
 * @author ZhangHao
 * @date 2018年5月8日 下午5:12:58 
 * @version 1.0.0.1
 */
public interface IRoleRpcService {
	
	/**
	 * @description: 企业角色列表展示接口，列表分页
	 * 
	 * 可按角色名称进行搜索
	 *  
	 * @param dto
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月8日 下午5:22:02 
	 * @version 1.0.0.1
	 */
	public PageInfo<SysRole> ajaxPageListByDto(SysRoleDto dto);
	
	/**
	 * @description: 企业全部角色查询接口，无需分页
	 *
	 * @param dto
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月8日 下午5:29:47 
	 * @version 1.0.0.1
	 */
	public List<SysRole> findListByDto(SysRoleDto dto);

	/**
	 * @description: 查询符合条件的角色数量
	 *
	 * @param entity
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月8日 下午5:58:33 
	 * @version 1.0.0.1
	 */
	public Integer selectCountByType(SysRole entity);
	
	/**
	 * @description: 根据主键ID更新角色数据，如果id为null或updateTime为null则返回0，标识更新失败
	 *		逻辑删除也调用此方法。
	 *
	 * @param entity
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月8日 下午6:00:19 
	 * @version 1.0.0.1
	 */
	public Integer updateSelective(SysRole entity);
	
	/**
	 * @description: 插入角色数据并返回自增id
	 *
	 * @param entity
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月8日 下午6:04:27 
	 * @version 1.0.0.1
	 */
	public SysRole insertSelective(SysRole entity);
	
	/**
	 * @description: 根据条件定位一条角色信息
	 *
	 * @param dto
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月8日 下午6:07:56 
	 * @version 1.0.0.1
	 */
	public SysRole selectSysRoleByType(SysRoleDto dto);
	
	/**
	 * @description: 查询角色对应的全部菜单
	 *
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月8日 下午6:10:24 
	 * @version 1.0.0.1
	 */
	public List<SysRoleAuthority> findSysRoleAuthorityByDto(SysRoleAuthorityDto dto);
	
	/**
	 * @description: 增加角色和菜单的对应关系
	 *
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月8日 下午6:30:14 
	 * @version 1.0.0.1
	 */
	public Integer insertSysRoleAuthority(SysRoleAuthority entity);
	
	/**
	 * @description: 根据角色id、菜单id更新角色菜单对应关系，如果updateTime为null则返回0，标识更新失败
	 *		逻辑删除也调用此方法。
	 *
	 * @param dto
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月8日 下午6:33:05 
	 * @version 1.0.0.1
	 */
	public Integer updateSysRoleAuthorityByDto(SysRoleAuthorityDto dto);

	/**
	 * @description: 增加角色属性的对应关系
	 *
	 * @param entity
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月9日 下午3:45:27 
	 * @version 1.0.0.1
	 */
	public Integer insertSysRoleAttribute(SysRoleAttribute entity);
	
	/**
	 * @description: 根据角色id更新角色属性对应关系，如果updateTime为null则返回0，标识更新失败
	 *		逻辑删除也调用此方法。
	 *
	 * @param entity
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月21日 下午7:41:45 
	 * @version 1.0.0.1
	 */
	public Integer updateSysRoleAttribute(SysRoleAttribute entity);
	
	/**
	 * @description: 根据条件查询数据属性
	 *
	 * @param dto
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月23日 下午6:40:19 
	 * @version 1.0.0.1
	 */
	public SysAttribute findSysAttributeByType(SysAttributeDto dto);
	
	/**
	 * @description: 根据条件定位一条角色菜单信息
	 *
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月23日 下午9:03:01 
	 * @version 1.0.0.1
	 */
	public SysRoleAuthority findSysRoleAuthorityByType(SysRoleAuthorityDto dto);
	
	
	/**
	 * @description: 根据条件定位一条角色数据权限信息
	 *
	 * @param dto
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月23日 下午9:04:16 
	 * @version 1.0.0.1
	 */
	public SysRoleAttribute findSysRoleAttributeByType(SysRoleAttributeDto dto);
	
	
	/**
	 * @description: 增加一条数据属性信息
	 *
	 * @return 
	 * @author ZhangHao
	 * @date 2018年6月2日 下午3:40:59 
	 * @version 1.0.0.1
	 */
	public SysAttribute insertSysAttribute(SysAttribute entity);
}


